package 其他;

import java.util.ArrayList;
import java.util.List;

import java.util.*;

/*
题目描述
        给出一个正整数N和长度L，找出一段长度大于等于L的连续非负整数，他们的和恰好为N。答案可能有多个，
        我们需要找出长度最小的那个。
        例如 N = 18 L = 2：
        5 + 6 + 7 = 18
        3 + 4 + 5 + 6 = 18
        都是满足要求的，但是我们输出更短的 5 6 7
输入描述:
        输入数据包括一行： 两个正整数N(1 ≤ N ≤ 1000000000),L(2 ≤ L ≤ 100)
输出描述:
        从小到大输出这段连续非负整数，以空格分隔，行末无空格。如果没有这样的序列或者找出的序列长度大于100，则输出No
 */
public class test01 {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Integer N = scanner.nextInt(), L = scanner.nextInt();
        List<Integer> list = new ArrayList<>();
        for (int i = L; i <= 100; i++) {
            // 要从最短的开始判断
            //保证该等差数列首项>=0
            //判断首项是不是正好对当前元素的个数整除

            if (N - (i * i - i) / 2 >= 0 && (N - (i * i - i) / 2) % i == 0) {
                int a = (N - (i * i - i) / 2) / i;
                for(int j = 0; j < i; j++){
                    list.add(a + j);
                }
                break;
            }
        }
        for(int i = 0; i < list.size(); i++){
            if(i == 0)
                System.out.print(list.get(0));
            else
                System.out.print(" " + list.get(i));
        }
       if(list.size() == 0)
           System.out.println("No");
    }
}


